#include "FachadaSistema.h"
#include "Usuario.h"
#include "Estado.h"
#include "Rol.h"
#include "Documentacion.h"
#include "Historial.h"
#include "Incidente.h"
#include <QStringList>
#include <QString>

FachadaSistema::FachadaSistema()
{


}

FachadaSistema::~FachadaSistema()
{


}

QVector<QString> FachadaSistema::validarUsuario(QString login,QString contrasena)
{
	Usuario objUsuario;
	return objUsuario.validarUsuario(login, contrasena);
}

QStringList FachadaSistema::cargarRoles()
{
	Rol objRol;
	QStringList roles;
	roles = objRol.cargarRoles();
	return roles;
}

QStringList FachadaSistema::cargarPersonasPrimerEstado()
{
	Incidente objIncidente;
	return objIncidente.cargarPersonasPrimerEstado();
}

QString FachadaSistema::crearUsuario(QString nombre,QString cedula,QString login,QString rol,QString estado)
{
	Usuario objUsuario;
	return objUsuario.crearUsuario(nombre, cedula, login, rol, estado);
}

QVector<QString> FachadaSistema::consultarUsuario(QString id,QString cedula,QString login)
{
	Usuario objUsuario;
	return objUsuario.consultarUsuario(id, cedula, login);
}

QString FachadaSistema::modificarUsuario(QString id, QString nombre,QString cedula,QString login,QString rol,QString estado)
{
	Usuario objUsuario;
	return objUsuario.modificarUsuario(id, nombre, cedula, login, rol, estado);
}

QString FachadaSistema::registrarIncidente(QString descripcion, QString prioridad, QString persona)
{
	Incidente objIncidente;
	return objIncidente.registrarIncidente(descripcion, prioridad, persona);
}




QString FachadaSistema::crearEstado(QString nombre)
{
	Estado objEstado;
	return objEstado.crearEstado(nombre);
}

QVector<QString> FachadaSistema::consultarEstado(QString id,QString nombre)
{
	Estado objEstado;
	return objEstado.consultarEstado(id, nombre);
}

QString FachadaSistema::modificarEstado(QString id, QString nombre)
{
	Estado objEstado;
	return objEstado.modificarEstado(id, nombre);
}

QString FachadaSistema::eliminarEstado(QString id, QString nombre)
{
	Estado objEstado;
	return objEstado.eliminarEstado(id, nombre);
}


QStringList FachadaSistema::cargarEstados()
{
	Estado objEstado;
	QStringList estado;
	estado = objEstado.cargarEstados();
	return estado;
}

QString FachadaSistema::crearRelacion(QString estDominante, QString estDominado)
{
	Estado objEstado;
	return objEstado.crearRelacion(estDominante, estDominado);
}

QString FachadaSistema::consultarRelacion(QString estDominante, QString estDominado)
{
	Estado objEstado;
	return objEstado.consultarRelacion(estDominante, estDominado);
}

QString FachadaSistema::eliminarRelacion(QString estDominante, QString estDominado)
{
	Estado objEstado;
	return objEstado.eliminarRelacion(estDominante, estDominado);
}

QString FachadaSistema::crearEstPorRol(QString rol, QString estado)
{
	Rol objRol;
	return objRol.crearEstPorRol(rol, estado);
}

QString FachadaSistema::consultarEstPorRol(QString rol, QString estado)
{
	Rol objRol;
	return objRol.consultarEstPorRol(rol, estado);
}

QString FachadaSistema::eliminarEstPorRol(QString rol, QString estado)
{
	Rol objRol;
	return objRol.eliminarEstPorRol(rol, estado);
}

QVector<QVector <QString> > FachadaSistema::cargarIncidentes(QString idUsuario)
{
	Incidente objIncidente;
	return objIncidente.cargarIncidentes(idUsuario);
}

QString FachadaSistema::cargarDocumentacion(QString idIncidente, QString documento)
{
	Documentacion objDocumentacion;
	QString resultado = objDocumentacion.cargarDocumentacion(idIncidente, documento);
	return resultado;
}

QStringList FachadaSistema::nuevosEstados(QString estadoActual)
{
	Estado objEstado;
	QStringList estados;
	estados = objEstado.nuevosEstados(estadoActual);
	return estados;
}

QStringList FachadaSistema::nuevosUsuarios(QString estadoActual)
{
	Usuario objUsuario;
	QStringList usuarios;
	usuarios = objUsuario.nuevosUsuarios(estadoActual);
	return usuarios;
}

QString FachadaSistema::asignarIncidente(QString incidente, QString estado, QString usuario)
{
	Incidente objIncidente;
	return objIncidente.asignarIncidente(incidente, estado, usuario);
}

QString FachadaSistema::usuario(QString incidente)
{
	Usuario objUsuario;
	return objUsuario.usuario(incidente);
}


void FachadaSistema::registrarHistorial(QString usuario, QString comentario, QString idIncidente)
{
	Historial objHistorial;
	objHistorial.registrarHistorial(usuario, comentario, idIncidente);
}

QStringList FachadaSistema::verUsuarios()
{
	Usuario objUsuario;
	return objUsuario.verUsuarios();
}

QVector<QVector <QString> > FachadaSistema::cargarHistorial(QString usuario)
{
	Historial objHistorial;
	return objHistorial.cargarHistorial(usuario);
}

QString FachadaSistema::cambiarContrasena(QString login, QString contrasenaA, QString contrasenaN, QString contrasenaN2)
{
	Usuario objUsuario;
	return objUsuario.cambiarContrasena(login, contrasenaA, contrasenaN, contrasenaN2);
}